// 频道管理的模块
import { reqGetUserChannels, reqGetAllChannels } from '@/api/channels'
const state = {
  channels: [], // 我的频道的数据
  allChannels: [] // 所有频道数据
}
const mutations = {
  // 设置我的频道
  setMyChannels(state, arr) {
    state.channels = arr
  },
  // 设置所有频道
  setAllChannels(state, arr) {
    state.allChannels = arr
  },
  // 新增频道
  addChannel(state, channel) {
    // 追加给我的频道
    state.channels.push(channel)
  },
  // 移除频道
  delChannel(state, id) {
    const i = state.channels.findIndex(item => item.id === id)
    state.channels.splice(i, 1)
  }
}
const actions = {
  // action可以包含任何异步操作,提交的是mutation,而不是直接变更状态
  // 获取我的频道
  async getMyChannels(context) {
    const { data: { data: { channels }}} = await reqGetUserChannels()
    // console.log(channels)
    // 提交一个mutation
    context.commit('setMyChannels', channels)
  },
  // 获取所有频道的action
  async getAllChannels(context) {
    const { data: { data: { channels }}} = await reqGetAllChannels()
    // console.log(channels)
    context.commit('setAllChannels', channels)
  }
}
const getters = {
  // 定义一个getter筛选出可选频道
  // 方式一
  /*  optionalChannels(state) {
    return state.allChannels.filter(item => {
      let flag = true
      state.channels.forEach(obj => {
        if (obj.id === item.id) {
          flag = false
        }
      })
      return flag === true // filter只要遇到true就会收集
    })
    // console.log(arr)
  } */
  // 方式2
  // optionalChannels(state) {
  //   const arr = state.allChannels.filter(item => {
  //     const i = state.channels.findIndex(obj => {
  //       return obj.id === item.id
  //     })
  //     console.log(i)
  //     if (i === -1) {
  //       return true
  //     }
  //   })
  //   console.log(arr)
  //   return arr
  // }
  optionalChannels(state) {
    return state.allChannels.filter(item => state.channels.findIndex(obj => obj.id === item.id) === -1)
  }
}
export default {
  state,
  mutations,
  actions,
  getters,
  // 开启命名空间
  namespaced: true
}
